package org.feng.entity;

import java.sql.Timestamp;
import java.time.LocalDateTime;

import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.Id;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

import org.hibernate.annotations.CreationTimestamp;
import org.hibernate.annotations.UpdateTimestamp;

import com.fasterxml.jackson.annotation.JsonFormat;

import io.quarkus.hibernate.orm.panache.PanacheEntityBase;
import io.quarkus.security.jpa.Username;

/**
 * 退费信息
 * @author FengWenXue
 *
 */
@Entity
public class Refund extends PanacheEntityBase {

    /** 
     * 退费订单ID 和订单ID一致
     */
	@Id
    public Long orderId;
	
	/**
	 * 第三方支付ID 微信 对账用
	 */
    @Column(length=60,nullable=false)
    public String payId;
	
	/**
	 * 支付用户ID 微信OpenId
	 */
    @Column(length=40,nullable=false)
    public String openId;
	
    /** 
     * 设备ID
     */
    public Integer deviceId;
    /**
     * 服务商ID
     */
    public Integer serverId;
    
    /**
     * 运营商ID
     */
    public Integer ispId;
    
    /**
     * 退费人ID
     */
    public Integer userId;

    /**
     * 退费类别 1 平台退费  0 服务商退费
     */
    //@Column(columnDefinition="1")
    public Byte type=0;
    /**
     * 退费人名
     */
    @Column(length=50,nullable=false,unique=true)
    public String userName;//
    /**
     * 退费金额 人民币 单位(分)
     */
    //@Column(columnDefinition="1")
    public Integer refundFee;

    /**
     * 原支付金额 人民币 单位(分)
     */
    //@Column(columnDefinition="1")
    public Integer payFee;
    
    /**
     * 退费状态 0 待退费  1 退费成功 2 退费失败 
     */
    //@Column(columnDefinition="1")
    public Byte payStatu=0;
    /**
     * 订单描述 吸氧|制氢|商品名 时长|数量 退费价格
     */
    @Column(length=30,nullable=false)
    public String desc;

	/**
     * 存在状态 1 正常  2 备份 -1 失效 -2 删除 >0 显示  <0 不显示
     */
    //@Column(columnDefinition="1")
    public Byte status=1;
    
    /**
	* 开始时间,只读
	*/
	@CreationTimestamp //新增时更新时间
	@JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
	@Column(nullable=false,updatable=false)
    private LocalDateTime createTime;//=LocalDateTime.now();

    public LocalDateTime getCreateTime() {
		return createTime;
	}

	/**
	* 退费完成时间
	*/
	//@JsonIgnore
    @UpdateTimestamp //更新时更新时间
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm", timezone = "GMT+8")
    //@Temporal(TemporalType.TIMESTAMP)
	@Column(nullable=false,updatable=false,insertable=false)
    public Timestamp modifyTime;	
}
